// 导入数据库模块
const db = require('../db/index.js')
// 导入 bcryptjs 
const bcrypt = require('bcryptjs')


// 个人中心模板
exports.getUserInfo = (req,res) => {
	// 定义SQL语句,排除 password 字段
	const sql = 'select id, username, nickname, email, user_pic from ev_users where id=?'
	db.query(sql,req.user.id,(err,result)=>{
		// console.log(req.user);
		// 1. 执行 SQL 语句失败
		if(err) return res.handleSend(err)
		 // 2. 执行 SQL 语句成功，但是查询到的数据条数不等于 1
		if(result.length !== 1) return res.handleSend('获取用户信息失败')
		// TODO....
		res.send({
			stauts:0,
			message: '获取用户基本信息成功！',
			data:result[0]
		})
	})
}

// 更新用户基本信息
exports.userInfo = (req,res)=>{
	// req.user 是从数据库查询到的结果数据
	// console.log(req.user);
	// req.body是用户输入的参数
	// console.log(req.body);
	// 定义SQL语句
	const sql = 'update ev_users set ? where id=?'
	db.query(sql, [req.body , req.body.id] , (err,result)=>{
		// 1. 执行 SQL 语句失败
		if(err) return res.handleSend(err)
		 // 2. 执行 SQL 语句成功，但是查询到的数据条数不等于 1
		if(result.affectedRows !== 1) return res.handleSend('更新用户信息失败')
		
		return res.send({
			stauts:0,
			message:'更新用户信息成功'
		})
	})
}

// 密码重置
exports.updatePwd = (req,res)=>{
	// 定义根据 id 查询用户数据的 SQL 语句
	const sql = 'select * from ev_users where id=?'
	
	db.query(sql,req.user.id,(err,result)=>{
		// 1. 执行 SQL 语句失败
		if(err) return res.handleSend(err)
		// 2. 执行 SQL 语句成功，但是查询到的数据条数不等于 1
		if(result.length !== 1) return res.handleSend('用户不存在')
		// TODDO...
		// 判断提交的 旧密码 是否正确
		// 用户提交得是明文  数据库得是密文
		// bcrypt.compareSync(提交的密码，数据库中的密码)
		const pwdBool =  bcrypt.compareSync(req.body.oldPwd , result[0].password)
		// 如果是false 就不正确
		if(!pwdBool) return res.handleSend('输入密码与原密码不一致')
		// 验证通过
		
		// 对新密码进行更新
		const sql = 'update ev_users set password=? where id=?'
		
		// 对新密码进行 bcrypt 加密处理
		const newPwd = bcrypt.hashSync(req.body.newPwd, 12)
		
		db.query(sql, [newPwd , req.user.id],(err,result)=>{
			// 1. 执行 SQL 语句失败
			if(err) return res.handleSend(err)
			// 2. 执行 SQL 语句成功，但是查询到的数据条数不等于 1
			if(result.affectedRows !== 1) return res.handleSend('修改密码失败')
			
			// TODO.....
			res.handleSend('修改密码成功',0)
		})
		
		
	}) 
}

// 更新头像
exports.updateAvatar = (req,res)=>{
	// 定义更新用户头像的 SQL 语句
	const sql = 'update ev_users set user_pic=? where id=?'
	db.query(sql , [req.body.avatar , req.user.id] , (err,result)=>{
		// 1. 执行 SQL 语句失败
		if(err) return res.handleSend(err)
		// 2. 执行 SQL 语句成功，但是查询到的数据条数不等于 1
		if(result.affectedRows !== 1 ) return res.handleSend('更新头像失败')
		
		res.handleSend('更新头像成功',0)
		
	})
}